// 柯里化函数
// function currie(fn) {
// 	return function _currie(...args) {
// 		if (args.length >= fn.length) {
// 			return fn.apply(this, args)
// 		} else {
// 			return function (...params) {
// 				return _currie.apply(this, [...args, ...params])
// 			}
// 		}
// 	}
// }

// function sum(a, b, c, d) {
// 	return a + b + d + c
// }

// function multiplicate(a, b) {
// 	return a * b
// }
// const res = currie(sum)
// console.log(res(1, 2)(3, 4))
// 自执行函数
// for (var i = 0; i < 10; i++) {
// 	;(function (i) {
// 		setTimeout(() => {
// 			console.log(i)
// 		}, 0)
// 	})(i)
// }

// 防抖

function debounce(fn, time) {
	let timer = null
	return function (...args) {
		if (timer) clearTimeout(timer)
		timer = setTimeout(() => {
			fn.apply(this, args)
		}, time)
	}
}

// 节流

function throttle(fn, time) {
	let startTime = 0
	return function (...args) {
		const nowTime = Date.now()
		if (time - (nowTime - startTime) <= 0) {
			fn.apply(this, args)
			startTime = nowTime
		}
	}
}
